前言
对于一个APP来说,我相信我们开发最担心的就是出bug,只要是线上APP出bug,心里就慌得很,这是一件很严重的事情,还有可能让用户一气之下把你的APP删掉,从此再也不会出现在他的手机里面。
但是如果我们严格把控APP的质量,我们做到每天都构建一个版本并且测试,我们将这个APP上传到一个特定的测试系统,当有代码更新的时候或者每天设置一个时间去不断的跑测试,这样我们在开发阶段就发现很多问题。
上面我们说的就是CI(Continuous Integration)持续集成+TDD(Test Driven Development)测试驱动开发。
持续集成带来的好处
持续集成带来的好处是显而易见的
减少风险。通过每天构建版本,在开发阶段就可以发现项目的缺陷,排除一些因为项目设置的低级错误而导致的bug,用同样的脚本和过程构建和测试软件,排除因代码外的其他因素。
减少重复的过程,提高效率。当项目变大之后,频繁的打包会很影响开发的效率,但是有了持续集成我们不用关心打包的过程,将重复的build,archive,code sign交给提供构建服务的机器去做,将时间放在更有意义的事情上面。
随时可部署。持续集成有一个好处就是我们每天都会做构建版本,可以交付部署上线,当我们无休止的讨论需求软件质量或者开发进度的时候,对于客户来说,不如一个可安装的软件包来得实际
持续集成之Jenkins
CI包括三个基本的元素,第一个是可自动构建版本的服务,第二个是代码仓库,第三个是搭建了服务的机器。
可自动构建版本的服务目前有Jenkins和fastlane。
代码仓库也就是我们平时使用的github,gitlab等等
在iOS中机器必须是搭建OSX系统的机器,因为构建需要用到xcodeBuild命令,该命令由xcode提供,而xcode只能安装在OSX系统下面。
下面我们要说的就是可自动构建版本的服务,Jenkins。
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性,构建完成之后通过脚本直接上传到分发平台或者测试平台。
Jenkins搭建
jenkins有两种安装方式
一种是通过在官网下载pkg安装包的方式安装,图形化的安装界面直接跟着提示安装就好了。
第二种是通过homebrew安装,不过在安装之前我们需要检测本地环境是否已经安装了java,可以使用java -version
来查看当前的java版本,如果没有安装的java的话可以在这里安装java。
还要检测是否已经安装了homebrew,查看本机homebrew版本’brew -v’。
如果java和homebrew都已经安装好,就可以开始安装jenkins了
1 | brew install jenkins |
当出现Jenkins is fully up and running之后,表明jenkins已经安装好了,如果没有自动打开http://localhost:8080 ,可以到网页上面自行打开该外地址。
上面给了一个地址,提示你去那里找到初始化的密码。打开/User/Shared/Jenkins/Home/secrets/initialAdminPassword复制出密码。
接下来会提示你安装一些插件,安装默认的插件即可,不过就算这里安装失败了也没关系,后面进到主界面还可以继续安装。
安装完插件之后会提示你创建一个jenkins用户。
输入这些信息之后点击save And Finish安装的过程就算完成了。接下来可以进入到jenkins主界面了。
我们主要关注一下面板左侧的选项,点击“系统管理”,然后找到“管理插件”
在“可选插件”中选中“GitLab Plugin”和“Gitlab Hook Plugin”这两项,然后安装。
安装Xcode插件
同安装GitLab插件的步骤一样,我们依次选择系统管理->管理插件,在“可选插件”中选中“Xcode integration”安装,安装完这个插件我们还需要安装一个“Keychains and Provisioning Profiles Management”插件。这个插件用于我们设置签名和证书。
安装“Keychains and Provisioning Profiles Management”之后,我们去到系统管理->Keychains and Provisioning Profiles Management设置签名和证书。
这里需要选择 login.keychain ,在 /Users/用户名/Library/keychains/login.keychain 目录里。如果不能通过选择的话,可以把login.keychain拷贝到桌面,然后在选择上传。
Code Signing Identity,可以添加多项。进入钥匙串,选择开发者证书或发布证书,拷贝完全,粘贴至Jenkins的Code Signing Identity项。
当把这个Keychain设置好了之后,Jenkins会把这个Keychain拷贝到/Users/Shared/Jenkins/Library/keychains这里,(Library是隐藏文件)。Provisioning Profiles文件也直接拷贝到/Users/Shared/Jenkins/Library/MobileDevice文件目录下
到这里Jenkins的搭建就算完成了,下一篇文章我们将会使用jenkins创建一个任务,然后构造版本并且上传蒲公英,最终的目的都是通过一个脚本来完成上述的操作。